/* 
 * File:   Solver.h
 * Author: gizmo
 *
 * Created on September 26, 2010, 2:26 PM
 */

#ifndef SOLVER_H
#define	SOLVER_H

#include "Graph.h"
#include "State.h"
#include <stack>

using namespace std;

/*
 * Solver class should contain whole algorithm and decision making incl.
 * stack of State instances. In the end a bestSolution should be found.
 */
class Solver {
public:
    Solver();
    Solver(const Solver& orig);
    virtual ~Solver();

    void init(Graph * gGraph);
    
    void solve();
    State & getBestSolution();

    void startClock();
    void endClock();
    float getRunningTime() const;

private:
    Graph * graph;
    State bestSolution;
    stack<State> myStack;
    clock_t start, end;

};

#endif	/* SOLVER_H */

